#if !defined(MGCONSTANT_H_INCLUDED)
#define MGCONSTANT_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define KEY01	_T("Enable Mouse Gesture")
#define KEY02	_T("Mouse Gesture Activation Button")
#define KEY03	_T("Enable Mouse Gesture Suspending Key")
#define KEY04	_T("Mouse Gesture Suspending Key")
#define KEY05	_T("Enable Double Click Scrolling")
#define KEY06	_T("Page Up/Down")
#define KEY07	_T("Page Top/Bottom")
#define KEY08	_T("Page Top/Bottom Recognition Area")
#define KEY09	_T("Gesture Recognition Sensitivity")
#define KEY10	_T("Detecting Repeated Same Direction Rate")
#define KEY12	_T("Preemptive Mouse Gesture Activation Button Always")
#define KEY13	_T("Show Gesture Recognition on Status Bar")
#define KEY14	_T("Identify Target Window Class")
#define KEY15	_T("Autoloading on Startup")

#define KEY16	_T("Use Mouse Middle Button For Double Click Scrolling")
#define KEY17	_T("Enable Help Tip")
#define KEY18	_T("Delay Time Help Tip")

namespace MG
{
	enum
	{
		NOCOMMAND = (WORD)0xFFFF,
	};

	enum Options
	{
		PageTopBottomRecognitionAreaMax = 15,			// 15 %
		GestureRecognitionSensitivityMin = 10,			// 10 pixels
		GestureRecognitionSensitivityMax = 50,			// 50 pixels
		DetectingRepeatedSameDirectionRateMin = 200,	// 200 mSec
		DetectingRepeatedSameDirectionRateMax = 1000,	// 1000 mSec
		TogglePreemptiveMGAButtonModeMin = 300,			// 300 mSec
		TogglePreemptiveMGAButtonModeMax = 2000,		// 2000 mSec
		DelayTimeHelpTipMin = 1000,						// 1000 mSec
		DelayTimeHelpTipMax = 5000						// 5000 mSec
	};

	// BUTTON_LEFT
	// BUTTON_MIDDLE
	// BUTTON_RIGHT
	enum Button
	{
		BUTTON_LEFT		= MK_LBUTTON,
		BUTTON_MIDDLE	= MK_MBUTTON,
		BUTTON_RIGHT	= MK_RBUTTON
	};
	
	// VIRTUAL_SHIFT
	// VIRTUAL_CONTRL
	// VIRTUAL_ALT
	enum VirtualKey
	{
		VIRTUAL_SHIFT	= VK_SHIFT,
		VIRTUAL_CONTROL	= VK_CONTROL,
		VIRTUAL_ALT		= VK_MENU,
	};

	// KEY_WHEEL_UP
	// KEY_WHEEL_DOWN
	// KEY_BUTTON1 (L Button)
	// KEY_BUTTON2 (M or R Button)
	enum KeyDef
	{
		KEY_WHEEL_UP		= 0,
		KEY_WHEEL_DOWN		= 1,
		KEY_BUTTON1			= 2,
		KEY_BUTTON2			= 3,
	};
	
	// ARROW_RIGHT
	// ARROW_UP
	// ARROW_LEFT
	// ARROW_DOWN
	enum ArrowDef
	{
		ARROW_RIGHT		= 0,
		ARROW_UP		= 1,
		ARROW_LEFT		= 2,
		ARROW_DOWN		= 3,
	};

	// DOUBLE_CLICK_PAGE_TOP
	// DOUBLE_CLICK_PAGE_BOTTOM
	// DOUBLE_CLICK_PAGE_UP
	// DOUBLE_CLICK_PAGE_DOWN
	// DOUBLE_CLICK_NONE
	enum DoubleClickOption
	{
		DOUBLE_CLICK_PAGE_TOP		= 0,
		DOUBLE_CLICK_PAGE_BOTTOM	= 1,
		DOUBLE_CLICK_PAGE_UP		= 2,
		DOUBLE_CLICK_PAGE_DOWN		= 3,
		DOUBLE_CLICK_NONE			= 4,
	};

	// MG_ACTIVATE					= 0,
	// MG_DEACTIVATE				= 1,
	// MG_ERROR						= 2,
	// MGAB_PREEMPTIVE_ON			= 3,
	// MGAB_PREEMPTIVE_OFF			= 4,
	enum NotifyOption
	{
		MG_ACTIVATE					= 0,
		MG_DEACTIVATE				= 1,
		MG_ERROR					= 2,
		MGAB_PREEMPTIVE_ON			= 3,
		MGAB_PREEMPTIVE_OFF			= 4,
	};
}	// namespace MG

#endif	// #if !defined(MGCONSTANT_H_INCLUDED)